"""
递归重要规则
1、执行一个函数时，就创建一个新的空间
2、函数的变量是独立的，比如 n 变量
3、递归必须向退出递归的条件逼近，否则就是无限递归，就会出现 RecursionError: maximum recursion depth exceeded
4、当一个函数执行完毕，或者遇到 return，就会返回，遵守谁调用，就将结果返回给谁
"""


# 当执行 test(4), 输出什么？
def recursion(n):
    if n > 2:
        recursion(n - 1)
    print(f"n = {n}")


recursion(4)


def factorial(n):
    if n == 1:
        return 1
    else:
        return factorial(n - 1) * n


print(factorial(4))
